package gbench.appdemo.myworld.market.commodity;

import gbench.common.tree.LittleTree.IRecord;

/**
 * 产品结构
 * @author gbench
 *
 */
interface IProduct{
    
    /**
     * 产品名称
     * @return
     */
    public String getName();
    
    /**
     * 产品的结构成分
     * 获取组件清单 {name:TUP2(Commodity,Number)}<br>
     * @return
     */
    public IRecord getComponents();
    
    /**
     * 判断是原材料 ：即 没有 component的的Product
     * @return
     */
    public default boolean isRaw() {
        return this.getComponents().isEmpty();
    }
    
    /**
     * 获取产品属性集合
     * @return 产品说行集合
     */
    public IRecord getAttributes();
    
    /**
     * 获取产品属性
     * @param name
     * @return 产品属性
     */
    public default Object attr(String name) {
        return this.getAttributes().get(name);
    }
}